const validator = {
  regTemplate(value, reg, msg) {
    if (!value) {
      return true;
    }
    return reg.test(value) || msg;
  },
  required(value, msg) {
    return !!value || msg || '必填';
  },
  strLength(value, min, max, msg) {
    if (!value) {
      return true;
    }

    if (typeof min !== 'number') {
      throw "min 值必须是数值型";
    }

    if (typeof max === 'string') {
      msg = max;
      max = null;
    }

    let flag = true;
    if (min && typeof value === 'string') {
      flag = value.length >= min || msg || '长度大于' + min + "个字符";
    }

    if (typeof flag === 'string') {
      return flag;
    }

    if (max && typeof value === 'string') {
      return value.length <= max || msg || '长度小于' + max + "个字符";
    }

    return true;
  },


  isChinese(value, msg) {
    return validator.regTemplate(value, /^[\u4e00-\u9fa5]*$/g, msg || '必须为中文');
  },
  isAlphaNumber(value, msg) {
    return validator.regTemplate(value, /^[A-Za-z0-9]*$/g, msg || '必须为数字或字母');
  },
  isAlpha(value, msg) {
    return validator.regTemplate(value, /^[A-Za-z]*$/g, msg || '必须字母');
  },
  isIP(value, msg) {
    return validator.regTemplate(value, /(\d+)\.(\d+)\.(\d+)\.(\d+)/g, msg || '请输入正确的ip地址');

  },
  isNumber(value, msg) {
    return validator.regTemplate(value, /^[0-9]*$/g, msg || '只能输入数字');
  },
  isWord(value, msg) {
    return validator.regTemplate(value, /^\w*$/g, msg || '字母、数字、下划线');
  },
  isUserName(value, msg) {
    return validator.regTemplate(value, /^[a-zA-Z][a-zA-Z0-9_]*$/g, msg || '字母开头，字母、数字、下划线组成');
  },
  isMobilePhone(value, msg) {
    return validator.regTemplate(value, /^1([34578])\d{9}$/, msg || '移动电话');
  },
  isEmail(value, msg) {
    return validator.regTemplate(value, /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g, msg || '邮箱');
  }
};


export default validator
